<?php
/**
 * 
 * Основной модуль системы
 * @author mr.Pie
 *
 */
class Core {
	private static $call;
	/**
	 * Инициализация системы
	 */
	public static function Create() {
		// настройка параметров
		self::$call = array ();
		mb_internal_encoding ('UTF-8');
		mb_http_input('UTF-8');
		mb_http_output('UTF-8');
		session_start();
		// загрузка автозагрузчика модулей
		include_once CLASSES_PATH.'/modules.class.php';
		Modules::Load('_SELF_');
		return 0;
	}
	/**
	 * Работа сайта
	 */
	public static function Work() {
		if (isset($_GET['ajax']) || isset($_POST ['ajax'])) {
			self::$call['func'] = 'ajaxMain';
			self::$call['include'] = PAGES_PATH . '/ajax.php';
		} else {
			if (!MySQL::Connected ()) {
				self::page404 ();
				return 0;
			}
			SEF::makeURL ();
			echo SEF::$url;
			$_SELECT = MySQL::SELECT ('SELECT `function`, `include`, `title`, `navig`, `template`, `html` FROM `{p}urls` WHERE `url` = "'.SEF::$url.'";');
			// 404-я в случае ошибки 
			if (!$_SELECT) {self::page404 (); return 0;}
			// настройки шаблона
			TPL::$page['title']       = $_SELECT['title'];
			TPL::$page['navigation'] .= $_SELECT['navig'];
			TPL::$page['template']    = $_SELECT['template'];
			TPL::$page['body']        = $_SELECT['html'];
			// модуль отображения
			self::$call['func']    = $_SELECT['function'];
			self::$call['include'] = PAGES_PATH.'/'.$_SELECT ['include'];
		}
		if (file_exists(self::$call['include']) && is_file(self::$call['include'])) {
			// подключение модуля
			include self::$call ['include'];
			// вызов функции
			call_user_func ( self::$call ['func'] );
		}
		// отображение страницы		
		self::pageRender ();
		return 0;
	}
	/**
	 * Редирект на 404 страницу
	 */
	static function page404() {
		header ('Location: '.Conf::$site['site_url'].'/404/');
		return 0;
	}
	/**
	 * Вывод страницы
	 */
	private static function pageRender() {
		if (file_exists ( MODULES_PATH.'/default.php')) {
			include MODULES_PATH.'/default.php';
			siteDefault ();
		}
		// установка headers 
		header ('Content-type: text/html; charset=UTF-8');
		// вывод страницы
		TPL::Render ();
	}
}
?>
